/* ** por compatibilidad se omiten tildes **
================================================================================
 TRABAJO PRACTICO 3 - System Programming - ORGANIZACION DE COMPUTADOR II - FCEN
================================================================================



    Definiciones globales del sistema.
*/

#ifndef __DEFINES_H__
#define __DEFINES_H__

/* Tiempo Prudencial */
#define TIEMPO_PRUDENCIAL 10000

/* Bool */
/* -------------------------------------------------------------------------- */
#define TRUE                    0x00000001
#define FALSE                   0x00000000
#define ERROR                   1


/* Misc */
/* -------------------------------------------------------------------------- */
#define PAGE_SIZE               0x00001000
#define CANT_ZOMBIS             8
#define OFFSET_RELOJ_X_ROJO	5
#define OFFSET_RELOJ_X_AZUL	59
#define OFFSET_RELOJ_Y		46
#define OFFSET_PUNTOS_Y_AZUL	47 
#define OFFSET_PUNTOS_Y_ROJO    47 
#define OFFSET_PUNTOS_X_AZUL	41 
#define OFFSET_PUNTOS_X_ROJO    36 
#define TIPO_MAGO "M"
#define TIPO_GUERRERO "G"
#define TIPO_CLERIGO "C"
#define MMU_FREE_INIT           0x100000
#define CAMPO_SIZE_X              78
#define CAMPO_SIZE_Y              44

#define EIP_IDLE 0x16000

#define PT_CODIGO_TASK_ROJO 0x10000
#define PT_CODIGO_TASK_AZUL 0x13000
#define TASK_LENGTH_INIT 0x1000

#define OFFSET_ZOMBIES_RESTANTES_Y_AZUL	47 
#define OFFSET_ZOMBIES_RESTANTES_Y_ROJO    47 
#define OFFSET_ZOMBIES_RESTANTES_X_AZUL	48 
#define OFFSET_ZOMBIES_RESTANTES_X_ROJO    30 

#define SIZE_W                  78
#define SIZE_H                  44

#define BASE_STACK 0x101FFF

/* Indices en la gdt */
/* -------------------------------------------------------------------------- */
#define GDT_COUNT 31

#define GDT_IDX_NULL_DESC           0
#define GDT_IDX_CODE_0		    8
#define GDT_IDX_CODE_3		    9
#define GDT_IDX_DATA_0		    10
#define GDT_IDX_DATA_3		    11
#define GDT_IDX_VIDEO		    12
#define GDT_IDX_IDLE		    13	
#define GDT_IDX_INIT		    14
#define GDT_IDX_ROJO_1		    15
#define GDT_IDX_ROJO_2		    16
#define GDT_IDX_ROJO_3		    17
#define GDT_IDX_ROJO_4		    18
#define GDT_IDX_ROJO_5		    19
#define GDT_IDX_ROJO_6		    20
#define GDT_IDX_ROJO_7		    21
#define GDT_IDX_ROJO_8		    22
#define GDT_IDX_AZUL_1		    23
#define GDT_IDX_AZUL_2		    24
#define GDT_IDX_AZUL_3		    25
#define GDT_IDX_AZUL_4		    26
#define GDT_IDX_AZUL_5		    27
#define GDT_IDX_AZUL_6		    28
#define GDT_IDX_AZUL_7		    29
#define GDT_IDX_AZUL_8		    30


/* Offsets en la gdt */
/* -------------------------------------------------------------------------- */
#define GDT_OFF_NULL_DESC           (GDT_IDX_NULL_DESC      << 3)

/* Direcciones de memoria */
/* -------------------------------------------------------------------------- */
#define VIDEO                   0x000B8000 /* direccion fisica del buffer de video */
#define PD_DIR 0x27000
#define PT_KERNEL_0 0x28000
#define PT_KERNEL_1 0x29000
#define PT_KERNEL_2 0x2A000
#define PT_KERNEL_3 0x2B000
#define INIT_VIRTUAL_TASK_CODE 0x08000000
#define INIT_MAPA 0x400000
#endif  /* !__DEFINES_H__ */
